package com.blog.cmrpersonalblog.dto.article.response;

import com.blog.cmrpersonalblog.dto.comment.responst.CommentImageInfo;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 文章评论响应DTO
 */
@Data
public class ArticleCommentResponse {

    /**
     * 评论ID
     */
    private Long id;

    /**
     * 文章ID
     */
    private Long articleId;

    /**
     * 评论用户信息
     */
    private UserInfo user;

    /**
     * 父评论ID
     */
    private Long parentId;

    /**
     * 回复的用户信息（如果是回复评论）
     */
    private UserInfo replyToUser;

    /**
     * 根评论ID
     */
    private Long rootId;

    /**
     * 评论层级
     */
    private Integer level;

    /**
     * 评论内容
     */
    private String content;

    /**
     * 点赞数
     */
    private Integer likeCount;

    /**
     * 回复数
     */
    private Integer replyCount;

    /**
     * 当前用户是否已点赞
     */
    private Boolean isLiked;

    /**
     * 是否包含敏感词
     */
    private Boolean isSensitive;

    /**
     * 敏感度评分
     */
    private Integer sensitiveScore;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    /**
     * 子评论列表（如果需要）
     */
    private List<ArticleCommentResponse> children;

    /**
     * 是否有更多子评论
     */
    private Boolean hasMoreChildren;

    /**
     * 子评论总数
     */
    private Integer childrenTotal;

    /**
     * 评论图片列表
     */
    private List<CommentImageInfo> images;

    /**
     * 图片数量
     */
    private Integer imageCount;

    /**
     * 用户信息内部类
     */
    @Data
    public static class UserInfo {
        /**
         * 用户ID
         */
        private Long userId;

        /**
         * 用户昵称
         */
        private String nickName;

        /**
         * 头像
         */
        private String avatar;

        /**
         * 性别
         */
        private String sex;
    }

    /**
     * 是否为顶级评论
     */
    public boolean isTopLevel() {
        return parentId == null || parentId == 0;
    }

    /**
     * 是否为回复评论
     */
    public boolean isReply() {
        return parentId != null && parentId > 0;
    }

    /**
     * 获取显示的用户昵称
     */
    public String getDisplayName() {
        if (user == null) {
            return "匿名用户";
        }
        return user.getNickName() != null && !user.getNickName().trim().isEmpty() 
               ? user.getNickName()
               : null;
    }

    /**
     * 获取回复目标用户的显示昵称
     */
    public String getReplyToDisplayName() {
        if (replyToUser == null) {
            return null;
        }
        return replyToUser.getNickName() != null && !replyToUser.getNickName().trim().isEmpty() 
               ? replyToUser.getNickName() 
               : null;
    }
}
